#include "widget.h"
#include "ui_widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent) : QWidget(parent)
{
    ui = new Ui::Widget();
    ui->setupUi(this);

    this->setLayout(ui->verticalLayout);

    // 设置左下角文字靠右下角对齐
    // 1. 通过代码设置
    // ui->widgetBottom->setLayout(ui->horizontalLayout);
    // 2. 打破布局，通过UI设置

    // 4种信号与槽的实现方式
    // 1.1 在ui文件中右键点击按钮，选择转到槽
    // 1.2 双击ui文件, 左上角选择Edit Signals/Slots, 点击按钮, 然后选择槽函数

    // 2. 使用connect
    // connect(ui->saveBtn, SIGNAL(clicked()), this, SLOT(OnSaveBtnClick()));

    // 3. Lambda表达式(默认接受者是窗体时, this省略不写)
    // connect(ui->saveBtn, &QPushButton::clicked, [=]()
    // {
    //     qDebug() << "Lambda -- SaveBtn Clicked...";
    // });

    // 4. 第四种
    // connect(ui->openBtn, &QPushButton::clicked, this, &QWidget::close);

    // 自定义信号与槽函数
    connect(this, &Widget::mySignals, this, &Widget::mySlots);
    emit mySignals(100);
}

Widget::~Widget()
{
    delete ui;
}

// 第一种 1.1
void Widget::on_closeBtn_clicked()
{
    qDebug() << "close...";
    this->close();
}

// 第二种
void Widget::OnSaveBtnClick()
{
    qDebug() << "Save...";
}

void Widget::mySlots(int val)
{
    qDebug() << "params -- " << val;
}
